package gm.server;

import gm.server.geom.Vector2;

/**
 * Anyacsavar.
 *
 * @author imruf84
 */
public class Nut {

    /**
     * Menetes rúd.
     */
    private final ThreadedRod rod;

    /**
     * Konstruktor.
     *
     * @param rod menetes rúd
     */
    public Nut(final ThreadedRod rod) {
        this.rod = rod;
    }

    /**
     * Pozíció lekérdezése.
     *
     * @return pozíció
     */
    public double calculatePositionAbsolute() {
        return stepsToMetric(getRod().getMotor().getCurrentStepsAbsolute());
    }

    /**
     * Glopális pozíció meghatározása.
     *
     * @return globális pozíció
     */
    public Vector2 calculatePositionGlobal() {
        return new Vector2(getRod().getPosition(), getRod().getLength() - calculatePositionAbsolute());
    }

    /**
     * Lépések átváltása megtett útra.
     *
     * @param steps lépések
     * @return megtett út
     */
    public double stepsToMetric(double steps) {
        return (steps / getRod().getMotor().getStepsPerRotation()) * getRod().getPitch();
    }

    /**
     * Menetes rúd lekérdezése.
     *
     * @return menetes rúd
     */
    public ThreadedRod getRod() {
        return rod;
    }

}
